
package com.loan.rebate.platform.entity;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.loan.rebate.sensitiveword.SensitiveWordUtils;

/**
 * 平台导航实体类
 *
 * @author 朱国军
 * @version 2017年08月06日 朱国军
 */
public class LoanPlatformVO {
    
    /** 贷款平台ID */
    private String loanPlatformId;
    
    /** 平台名称 */
    private String platformName;
    
    /** 平台logo */
    private String platformLogo;
    
    /** 平台类型 */
    private Integer platformType;
    
    /** 放款时间区间 */
    private String lendingTime;
    
    /** 放款额度区间 */
    private BigDecimal loanLimitMin;
    
    /** 放款额度区间 */
    private BigDecimal loanLimitMax;
    
    /** 借款利息（百分之） */
    private BigDecimal loanRate;
    
    /** 借款利率类型 */
    private Integer loanRateType;
    
    /** 借款期限区间 */
    private Integer loanPeriodMin;
    
    /** 借款期限区间 */
    private Integer loanPeriodMax;
    
    /** 借款期限类型 */
    private Integer loanPeriodType;
    
    /** 借款其他说明 */
    private String loanRemark;
    
    /** 还款方式 */
    private String repaymentMethod;
    
    /** 申请流程 */
    private String applicationProcess;
    
    /** 适合人群 */
    private String suitableCrowd;
    
    /** 所需材料 */
    private String materialRequested;
    
    /** 贷款返利 */
    private String rebateInfo;
    
    /** 公司介绍 */
    private String platformInfo;
    
    /** 发布人 */
    private String publishUser;
    
    /** 创建时间 */
    private Date createTime;
    
    /** 更新时间 */
    private Date updateTime;
    
    /** 状态：0默认，1管理员删除，2用户删除 */
    private Integer dataStatus;
    
    /**
     * 设置贷款平台ID
     *
     * @param loanPlatformId 贷款平台ID
     */
    public void setLoanPlatformId(String loanPlatformId) {
        this.loanPlatformId = loanPlatformId;
    }
    
    /**
     * 获取贷款平台ID
     *
     * @return 贷款平台ID
     */
    public String getLoanPlatformId() {
        return loanPlatformId;
    }
    
    /**
     * 设置平台名称
     *
     * @param platformName 平台名称
     */
    public void setPlatformName(String platformName) {
        this.platformName = platformName;
    }
    
    /**
     * 获取平台名称
     *
     * @return 平台名称
     */
    public String getPlatformName() {
        return platformName;
    }
    
    /**
     * 设置平台logo
     *
     * @param platformLogo 平台logo
     */
    public void setPlatformLogo(String platformLogo) {
        this.platformLogo = platformLogo;
    }
    
    /**
     * 获取平台logo
     *
     * @return 平台logo
     */
    public String getPlatformLogo() {
        return platformLogo;
    }
    
    /**
     * 设置平台类型
     *
     * @param platformType 平台类型
     */
    public void setPlatformType(Integer platformType) {
        this.platformType = platformType;
    }
    
    /**
     * 获取平台类型
     *
     * @return 平台类型
     */
    public Integer getPlatformType() {
        return platformType;
    }
    
    /**
     * 设置放款时间区间
     *
     * @param lendingTime 放款时间区间
     */
    public void setLendingTime(String lendingTime) {
        this.lendingTime = lendingTime;
    }
    
    /**
     * 获取放款时间区间
     *
     * @return 放款时间区间
     */
    public String getLendingTime() {
        return lendingTime;
    }
    
    /**
     * 设置放款额度区间
     *
     * @param loanLimitMin 放款额度区间
     */
    public void setLoanLimitMin(BigDecimal loanLimitMin) {
        this.loanLimitMin = loanLimitMin;
    }
    
    /**
     * 获取放款额度区间
     *
     * @return 放款额度区间
     */
    public BigDecimal getLoanLimitMin() {
        return loanLimitMin;
    }
    
    /**
     * 设置放款额度区间
     *
     * @param loanLimitMax 放款额度区间
     */
    public void setLoanLimitMax(BigDecimal loanLimitMax) {
        this.loanLimitMax = loanLimitMax;
    }
    
    /**
     * 获取放款额度区间
     *
     * @return 放款额度区间
     */
    public BigDecimal getLoanLimitMax() {
        return loanLimitMax;
    }
    
    /**
     * 设置借款利息（百分之）
     *
     * @param loanRate 借款利息（百分之）
     */
    public void setLoanRate(BigDecimal loanRate) {
        this.loanRate = loanRate;
    }
    
    /**
     * 获取借款利息（百分之）
     *
     * @return 借款利息（百分之）
     */
    public BigDecimal getLoanRate() {
        return loanRate;
    }
    
    /**
     * 设置借款利率类型
     *
     * @param loanRateType 借款利率类型
     */
    public void setLoanRateType(Integer loanRateType) {
        this.loanRateType = loanRateType;
    }
    
    /**
     * 获取借款利率类型
     *
     * @return 借款利率类型
     */
    public Integer getLoanRateType() {
        return loanRateType;
    }
    
    /**
     * 设置借款期限区间
     *
     * @param loanPeriodMin 借款期限区间
     */
    public void setLoanPeriodMin(Integer loanPeriodMin) {
        this.loanPeriodMin = loanPeriodMin;
    }
    
    /**
     * 获取借款期限区间
     *
     * @return 借款期限区间
     */
    public Integer getLoanPeriodMin() {
        return loanPeriodMin;
    }
    
    /**
     * 设置借款期限区间
     *
     * @param loanPeriodMax 借款期限区间
     */
    public void setLoanPeriodMax(Integer loanPeriodMax) {
        this.loanPeriodMax = loanPeriodMax;
    }
    
    /**
     * 获取借款期限区间
     *
     * @return 借款期限区间
     */
    public Integer getLoanPeriodMax() {
        return loanPeriodMax;
    }
    
    /**
     * 设置借款期限类型
     *
     * @param loanPeriodType 借款期限类型
     */
    public void setLoanPeriodType(Integer loanPeriodType) {
        this.loanPeriodType = loanPeriodType;
    }
    
    /**
     * 获取借款期限类型
     *
     * @return 借款期限类型
     */
    public Integer getLoanPeriodType() {
        return loanPeriodType;
    }
    
    /**
     * 设置借款其他说明
     *
     * @param loanRemark 借款其他说明
     */
    public void setLoanRemark(String loanRemark) {
        this.loanRemark = loanRemark;
    }
    
    /**
     * 获取借款其他说明
     *
     * @return 借款其他说明
     */
    public String getLoanRemark() {
        return loanRemark;
    }
    
    /**
     * 设置还款方式
     *
     * @param repaymentMethod 还款方式
     */
    public void setRepaymentMethod(String repaymentMethod) {
        this.repaymentMethod = repaymentMethod;
    }
    
    /**
     * 获取还款方式
     *
     * @return 还款方式
     */
    public String getRepaymentMethod() {
        return repaymentMethod;
    }
    
    /**
     * 设置申请流程
     *
     * @param applicationProcess 申请流程
     */
    public void setApplicationProcess(String applicationProcess) {
        this.applicationProcess = applicationProcess;
    }
    
    /**
     * 获取申请流程
     *
     * @return 申请流程
     */
    public String getApplicationProcess() {
        return applicationProcess;
    }
    
    /**
     * 设置适合人群
     *
     * @param suitableCrowd 适合人群
     */
    public void setSuitableCrowd(String suitableCrowd) {
        this.suitableCrowd = suitableCrowd;
    }
    
    /**
     * 获取适合人群
     *
     * @return 适合人群
     */
    public String getSuitableCrowd() {
        return suitableCrowd;
    }
    
    /**
     * 设置所需材料
     *
     * @param materialRequested 所需材料
     */
    public void setMaterialRequested(String materialRequested) {
        this.materialRequested = materialRequested;
    }
    
    /**
     * 获取所需材料
     *
     * @return 所需材料
     */
    public String getMaterialRequested() {
        return materialRequested;
    }
    
    /**
     * 设置贷款返利
     *
     * @param rebateInfo 贷款返利
     */
    public void setRebateInfo(String rebateInfo) {
        this.rebateInfo = rebateInfo;
    }
    
    /**
     * 获取贷款返利
     *
     * @return 贷款返利
     */
    public String getRebateInfo() {
        return rebateInfo;
    }
    
    /**
     * 设置公司介绍
     *
     * @param platformInfo 公司介绍
     */
    public void setPlatformInfo(String platformInfo) {
        this.platformInfo = platformInfo;
    }
    
    /**
     * 获取公司介绍
     *
     * @return 公司介绍
     */
    public String getPlatformInfo() {
        return platformInfo;
    }
    
    /**
     * 设置发布人
     *
     * @param publishUser 发布人
     */
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }
    
    /**
     * 获取发布人
     *
     * @return 发布人
     */
    public String getPublishUser() {
        return publishUser;
    }
    
    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    
    /**
     * 获取创建时间
     *
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }
    
    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    
    /**
     * 获取更新时间
     *
     * @return 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }
    
    /**
     * 设置状态：0默认，1管理员删除，2用户删除
     *
     * @param dataStatus 状态：0默认，1管理员删除，2用户删除
     */
    public void setDataStatus(Integer dataStatus) {
        this.dataStatus = dataStatus;
    }
    
    /**
     * 获取状态：0默认，1管理员删除，2用户删除
     *
     * @return 状态：0默认，1管理员删除，2用户删除
     */
    public Integer getDataStatus() {
        return dataStatus;
    }
    
    /**
     * 检查字段长度是否超长，检查非空字段是否有值
     *
     * @return 检查提示信息，为null时表示检查通过
     */
    public String valid() {
        
        if (StringUtils.isNotBlank(loanPlatformId) && loanPlatformId.length() > 50) {
            return "贷款平台ID值超长，允许输入的最大长度为：50字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(loanPlatformId, 1)) {
            return "贷款平台ID中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(loanPlatformId, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isNotBlank(platformName) && platformName.length() > 100) {
            return "平台名称值超长，允许输入的最大长度为：100字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(platformName, 1)) {
            return "平台名称中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(platformName, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isNotBlank(platformLogo) && platformLogo.length() > 150) {
            return "平台logo值超长，允许输入的最大长度为：150字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(platformLogo, 1)) {
            return "平台logo中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(platformLogo, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isNotBlank(lendingTime) && lendingTime.length() > 100) {
            return "放款时间区间值超长，允许输入的最大长度为：100字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(lendingTime, 1)) {
            return "放款时间区间中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(lendingTime, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isNotBlank(loanRemark) && loanRemark.length() > 255) {
            return "借款其他说明值超长，允许输入的最大长度为：255字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(loanRemark, 1)) {
            return "借款其他说明中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(loanRemark, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isNotBlank(repaymentMethod) && repaymentMethod.length() > 100) {
            return "还款方式值超长，允许输入的最大长度为：100字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(repaymentMethod, 1)) {
            return "还款方式中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(repaymentMethod, 1) + "，请检查后再保存";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(applicationProcess, 1)) {
            return "申请流程中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(applicationProcess, 1) + "，请检查后再保存";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(materialRequested, 1)) {
            return "所需材料中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(materialRequested, 1) + "，请检查后再保存";
        }
        if (SensitiveWordUtils.isContaintSensitiveWord(rebateInfo, 1)) {
            return "贷款返利中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(rebateInfo, 1) + "，请检查后再保存";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(platformInfo, 1)) {
            return "公司介绍中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(platformInfo, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isNotBlank(publishUser) && publishUser.length() > 50) {
            return "发布人值超长，允许输入的最大长度为：50字符";
        }
        
        if (SensitiveWordUtils.isContaintSensitiveWord(publishUser, 1)) {
            return "发布人中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(publishUser, 1) + "，请检查后再保存";
        }
        
        if (StringUtils.isBlank(loanPlatformId)) {
            return "贷款平台ID不能为空";
        }
        
        if (StringUtils.isBlank(platformName)) {
            return "平台名称不能为空";
        }
        
        if (StringUtils.isBlank(platformLogo)) {
            return "平台logo不能为空";
        }
        if (platformType == null) {
            return "平台类型不能为空";
        }
        
        if (StringUtils.isBlank(publishUser)) {
            return "发布人不能为空";
        }
        if (createTime == null) {
            return "创建时间不能为空";
        }
        if (updateTime == null) {
            return "更新时间不能为空";
        }
        if (dataStatus == null) {
            return "状态：0默认，1管理员删除，2用户删除不能为空";
        }
        
        return null;
    }
}
